from typing import List, Optional

from django33.http import HttpRequest

from django33_ninja import NinjaAPI, Schema, Form, File, Header, Cookie
from django33_ninja.files import UploadedFile

# 创建 Django-Ninja API 实例
api = NinjaAPI()


# 创建相册接口
@api.post("/albums/create")
def create_album(
        request: HttpRequest,
        name: str = Form(...),  # 必填字段
        description: Optional[str] = Form(None),  # 可选字段
        file: UploadedFile = File(...),  # 必填文件
):
    """
    创建相册接口
    - name: 相册名称（必填）
    - description: 相册描述（可选）
    - cover: 相册封面图片（必填）
    """
    try:
        # 验证文件大小（例如限制为 10MB）
        if file.size > 10 * 1024 * 1024:  # 10MB
            return api.create_response(
                request,
                {"error": "文件大小不能超过 10MB"},
                status=400,
            )

        # 这里可以添加保存相册的逻辑，例如保存到数据库
        # 示例：返回上传的文件信息
        return {
            "name": name,
            "description": description,
            "cover": {
                "name": file.name,
                "size": file.size,
                "content_type": file.content_type,
            },
        }
    except Exception as e:
        # 捕获异常并返回错误信息
        return api.create_response(
            request,
            {"error": str(e)},
            status=500,
        )
